//
//  HomeViewController.swift
//  WBTest
//
//  Created by 张海峰 on 2017/7/20.
//  Copyright © 2017年 张海峰. All rights reserved.
//

import UIKit
import MJRefresh
class HomeViewController: BaseViewController {
    //MARK:- 懒加载属性
    fileprivate lazy var titleBtn: TitleBtn = TitleBtn()
    //注意: 在闭包中如果使用当前对象的属性或者调用方法， 也需要使用self
    //两个地方需要使用self ：1>如果在一个函数中出现歧义，在闭包中使用当前对象的属性和方法也需要self, 加上[weak self]防止循环引用
fileprivate lazy var popViewAnim:  PopViewAnimation = PopViewAnimation.init { [weak self](_ presented) in
        //改变titleBtn的选中状态
        self?.titleBtn.isSelected = presented
    }
    //MARK:- 系统回调函数
    override func viewDidLoad() {
        super.viewDidLoad()
        //没有登陆时设置的内容
        if !isLogin {
            visitorView.setupVisitorViewInfo(iconName: "up", title: "欢迎来到首页请先登陆，然后返回你会有新的发现")
            visitorView.addRotationAnim()
            return
        }
        //设置导航栏的内容
        setupNavigationBar()
        //请求数据
        loadStatuses()
        setupHeaderView()
        setupFooterView()
    }
}

//MARK:- 设置UI界面
extension HomeViewController
{
    func setupNavigationBar() {
        //左边Item
        navigationItem.leftBarButtonItem = UIBarButtonItem.init(imageName: "edit")
        //右边Item
        navigationItem.rightBarButtonItem = UIBarButtonItem.init(imageName: "share")
        //中间Item
        titleBtn.setTitle("codeywhy", for: .normal)
        titleBtn.addTarget(self, action: #selector(titleBtnClick), for: .touchUpInside)
        navigationItem.titleView = titleBtn
    }
    func setupHeaderView() {
        //1. 创建titleView
        let header = MJRefreshNormalHeader(refreshingTarget: self, refreshingAction: #selector(loadNewStatues))
        //2.设置header的属性
        header?.setTitle("下拉刷新", for: .idle)
        header?.setTitle("释放更新", for: .pulling)
        header?.setTitle("加载中", for: .refreshing)
        //3.设置tableView的header
        tableView.mj_header = header
        //4.进入刷新状态
        tableView.mj_header.beginRefreshing()
    }
    func setupFooterView() {
        tableView.mj_footer = MJRefreshAutoFooter(refreshingTarget: self, refreshingAction: #selector(loadMoreStatues))
    }
}
//MARK:- 事件监听的函数
extension HomeViewController
{
    func titleBtnClick(titleBtn: TitleBtn) {
        titleBtn.isSelected = !titleBtn.isSelected
        //1.创建弹出的控制器
        let popoverVC = PopoverViewController()
        //2.设置控制器的modal样式(这样弹出下面控制器的内容不会被移除)
        popoverVC.modalPresentationStyle = .custom
        //3.设置转场动画的代理
        popoverVC.transitioningDelegate = popViewAnim
        //4.设置弹出View的位置
        popViewAnim.presentedFrame = CGRect.init(x: 100, y: 55, width: view.frame.size.width-200, height: 250)
        //5. 弹出控制器
        present(popoverVC, animated: true
            , completion: nil)
    }
}
//MARK:- 请求数据
extension HomeViewController{
    //下拉加载最新数据
    func loadNewStatues() {
        print("loadNewStatues")
        self.tableView.mj_header.endRefreshing()
    }
     //上拉加载更多数据
    func loadMoreStatues() {
        print("loadMoreStatues")
        self.tableView.mj_footer.endRefreshing()
    }

    //请求数据
     func loadStatuses(){
        NetworkTools.shareInstance.loadStatuses { (result, error) in
            print(result,error)
        }
    }
}
